// app.js
// eslint-disable-next-line strict
class AppBootHook {
  constructor(app) {
    this.app = app;
  }

  configWillLoad() {}

  async didLoad() {
    // 所有的配置已经加载完毕
  }

  async willReady() {
    // 所有的配置已经加载完毕
  }
  async didReady() {
    const { app } = this;

    app.wsClients = new Map();
    app.wsAliveClients = new Map();
    app.outLineTimeout = new Map();

    // 在线设备列表
    app.onlineDeviceList = new Map();
    const clientUrl = app.config.sysProperty.clientUrl;
    const ctx = this.app.createAnonymousContext();
    ctx.websocket.client.start({ url: clientUrl });
    // app.messenger.on('initServer', async () => {
    //   const ctx = this.app.createAnonymousContext();
    //   console.log('启动ws');
    //   ctx.websocket.server.start({ port: wsPort });
    //   // 本地模拟
    //   // setInterval(() => {
    //   //   ctx.helper.pushOnlineDevice();
    //   // }, 1000);
    //   this.app.messenger.on('sendMessage', data => {
    //     // 处理数据
    //     if (data.type == 'once') {
    //       ctx.helper.sendToOnceConnect(data.clientId, data.message);
    //     } else {
    //       ctx.helper.sendToAllConnect(data.message);
    //     }
    //   });
    // });
  }

  async serverDidReady() {
    // http / https server 已启动，开始接受外部请求
    // 此时可以从 app.server 拿到 server 的实例
  }
  async beforeClose() {
    console.log('应用即将关闭');
  }
}

module.exports = AppBootHook;
